home *** CD-ROM | disk | FTP | other *** search
- class Date - 16
- Date Class
- class Date 2
- Derivation 2
- Public Members 2
- Member Functions 4
- Date::AddMonths 4
- Date::AddWeeks 4
- Date::AddYears 4
- Date::BOM 5
- Date::BOY 5
- Date::CDOW 5
- Date::CMonth 5
- Date Comparison Operators 6
- Date::Date 6
- Date::Day 8
- Date::DaysInMonth 8
- Date::DOY 8
- Date::EOM 8
- Date::eom 9
- Date::EOY 9
- Date::FirstDOM() 9
- Date::formatDate 9
- Date::getDate 10
- Date Holiday Constructors 10
- Date::isLeapYear 11
- Date::isDST 11
- Date::julDate 11
- Date::NDOW 12
- Date::NMonth 12
- Date::NYear4 12
- Date::operator << 12
- Date::operator const char * 13
- Date::operator +,- 13
- Date::operators +=, -= 13
- Date::operators ++, -- 14
- Date::Set 14
- Date::setCentury 14
- Date::setDST 15
- Date::setFormat 15
- Date::setSTD 15
- Date::setOption 15
- Date::WOM 16
- Date::WOY 16
- class Date
- A Date object represents absolute dates. It allows
- conversion to and from a selection of ASCII
- representations, and a complete set of arithmetic
- operations. Date values are based on the number
- of days since 4713BCE.
-
- Derivation
- The Date class was not designed for derivation.
- Because there are no virtual functions, the size of
- Date object is exactly 12 bytes, assuming a
- compiler making shorts 2 bytes, and longs 4 bytes.
-
- Public Members
-
-
- Construction/
- Destruction
- Date Creates Date objects in various
- ways.
- NewYearsDay Creates a Date object the
- PresidentsDay represent the listed holiday.
- ValentinesDay, (static member functions)
- etc.
- BOM, EOM, BOY, Create Date objects that
- EOY represents the first & final days
- of the month & year in which the
- given Date object falls.
-
- Extraction
- CDOW Returns as a Character string the
- day of the Week that this Date
- object represents. ('Sunday' ..
- 'Saturday')
- CMonth Returns as a character string the
- month that is Date object
- represents ("January"...
- "December"
- Day Returns the day of the month that
- this Date object represents.
- DaysInMonth Returns the number of days in the
- month of this Date object.
- (28..31)
- DOY Returns as an integer the
- relative date since Jan. 1
- FirstDOM Returns as an integer the day of
- the week of the first day of the
- month in which this Date object
- falls.
- julDate Returns Julian date (days since
- 4713BCE) as a long.
- NDOW Returns as a integer the day of
- the week that this Date object
- represents (1 = Sunday, 7 =
- Saturday)
- NMonth Returns as an integer the month
- that this Date object represents.
- NYear4 Returns as an integer the year
- this Date object represents.
- WOM Returns the Week Of Month (1..6)
- this Date falls in.
- WOY Returns the Week Of Year (1..52)
- this Date object falls in.
-
- Conversion
- getDate Returns as an MSDOS date_t
- structure, the date represented
- by the Date object.
- eom Returns as an MSDOS date_t, the
- last day of month this Date
- object represents.
-
- Operators
- operator +,- Adds and subtracts days (given as
- ints or longs) to Date objects.
- operator - Subtracts one Date object from
- another returning as a long, the
- number of days between them.
- operator +=, -= Adds & subtracts a number of days
- to and from this Date object.
- operator ++, -- Pre- & postfix incrementor &
- decrementor, alters Date object
- by one day.
- operator==,<, Compares two absolute Dates.
- etc.
-
- Operations
- AddMonths Adds months to the Date Object
- (adjusts year as required)
- AddWeeks Adds weeks to the Date Object.
- AddYears Adds years to the Date Object.
- isLeapYear() Returns true if leap year, false
- if not
- Set Full set of functions to set an
- existing Date object to a new
- value (to complement the set of
- constructors)
- isDST returns true if in Daylight
- Saving Time, false if not.
-
- Archive/Dump
- operator << Outputs a Date object to a
- ostream object.
-
- Member Functions
-
-
- Date::AddMonths
-
- Syntax Date &AddMonths( int nCount =1);
-
- Parameters nCount
- Indicates the number of months to add.
-
- Remarks This function allows you to add (or subtract,
- if nCount is negative) months to a Date
- object.
-
- Example Date d1 = Date("01/15/93");
- d1.AddMonths(3);
- assert( d1 == Date("04/15/93"));
-
-
- Date::AddWeeks
-
- Syntax Date &AddWeeks( int nCount =1);
-
- Parameters nCount
- Indicates the number of weeks to add.
-
- Remarks This function allows you to add (or subtract,
- if nCount is negative) weeks to a Date object.
-
- Example Date d1 = Date("01/15/93");
- d1.AddWeeks(3);
- assert( d1 == Date("02/05/93"));
-
-
- Date::AddYears
-
- Syntax Date &AddYears( int nCount =1);
-
- Parameters nCount
- Indicates the number of years to add.
-
- Remarks This function allows you to add (or subtract,
- if nCount is negative) years to a Date object.
-
- Example Date d1 = Date("01/15/93");
- d1.AddYears(3);
- assert( d1 == Date("01/15/96"));
-
-
- Date::BOM
-
- Syntax inline Date BOM(void) const;
-
- Remarks Returns a new Date object which represents
- the first day of the month of this Date object.
-
- Example Date d1 = Date("07/04/93");
- Date d2 = d1.BOM();
- assert(d2 == Date("07/01/93"));
-
-
- Date::BOY
-
- Syntax inline Date BOY(void) const;
-
- Remarks Returns a new Date object which represents
- the first day of the year of this Date object.
-
- Example Date d1 = Date("07/04/93");
- Date d2 = d1.BOY();
- assert(d2 == Date("01/01/93"));
-
-
- Date::CDOW
-
- Syntax inline const char *CDOW(void) const
-
- Remarks Returns a pointer to a string holding the day of
- the week ('Sunday'..'Saturday'). Note: That
- all calls to CDOW, as well as CMonth and
- formatDate share a common buffer, and subsequent
- calls overwrite previous strings.
-
- Example Date d1 = Date("09/01/1993");
- assert(strcmp(d1.CDOW(), "Wednesday") == 0);
-
-
- Date::CMonth
-
- Syntax inline const char * CMonth() const;
-
- Remarks Returns a pointer to a string holding the name
- of the month of this Date object
- ('January'...'December').
- Note: That all calls to CMonth, as well as
- CDOW and formatDate share a common buffer, and
- subsequent calls overwrite previous strings.
-
- Example Date d1 = Date("09/01/1993");
- assert(strcmp(d1.CMonth(), "September")==0);
-
-
- Date Comparison Operators
-
- Syntax inline int operator < (const Date &date)
- const;
- inline int operator <= (const Date &date)
- const;
- inline int operator > (const Date &date)
- const;
- inline int operator >= (const Date &date)
- const;
- inline int operator == (const Date &date)
- const;
- inline int operator != (const Date &date)
- const;
-
- Remarks These operators compare two absolute dates and
- return TRUE if the condition is true; otherwise
- FALSE.
-
- Example Date d1 = Date("Today");
- Date d2 = d1 + 30; // 30 days later.
- assert( d1 != d2);
- assert( d1 < d2);
- assert( d1<=d2);
-
-
- Date::Date
-
- Syntax Date();
- Date ( int nMonth, int nDay, int nYear );
- Date ( long lJulian);
- Date (const char * szDate);
- Date (const Date & dtDateSrc);
- Date (const tm & TM);
- Date (int nWeeknum, int nDow, int nMonth, int
- nYear);
- Date (const DOSDATE_T &ds);
-
-
- Parameters dtDateSrc
- Indicates a Date object which already exists
-
- nMonth, nDay, nYear
- Indicates month, day of month, and year.
-
- lJulian
- Indicates the number of days from 2714BCE.
-
- szDate
- Indicates a character string containing a
- formatted date.
-
- nWeeknum, nDOW
- Indicates the week number of the month, and
- the day of the week.
-
- TM
- Indicates a TM struct value.
-
- ds
- Indicates a MSDOS date struct value.
-
-
- Remarks All these constructor create a new Date object
- initialized with the specified absolute date.
-
- Each constructor is described below:
-
- Date();
- Constructs a new Date object with a zero
- (illegal) date.
- Note Zero is an invalid date. This
- constructor is provided to allow the definition
- of Date object arrays. You should initialize
- such arrays with valid dates prior to use.
-
- Date (const Date & dtDateSrc);
- Constructs a Date object from another Date
- value.
-
- Date ( int nMonth, int nDay, int nYear );
- Constructs a Date object from the given
- components, with each component constraint to
- the following ranges:
- Component Range
- nYear -4713 - 9999
- nMonth 1-12 or one of the Months enums
- (JANUARY, FEBRUARY etc.)
- nDay 1-31
-
- Date (int nWeeknum, int nDow, int nMonth, int
- nYear);
- Constructs a Date object from the given
- components, with each component constraint to
- the following ranges:
- Component Range
- nWeeknum 0-5
- nDOW 1-7 or one of the Wday enums
- (SUNDAY, MONDAY, etc.)
- nYear -4713 - 9999
- nMonth 1-12 or one of the Months enums
- (JANUARY, FEBRUARY etc.)
- This constructor allows you to build a Date
- object which is, for example, "The third
- Wednesday in March, 1993". If nWeeknum is
- Zero (0), the object created will be the
- date of the last weekday of that type in the
- month.
-
- Date (const char * szDate);
- Constructs a Date object from a character
- string. The string may be in any of the
- following formats: (These are also the
- formats in which a Date can be output.) The
- constructor will determine which format it is.
- "09/05/1993"
- "5 Sep 93"
- "Sun Sept 5, 1993"
- "Sunday September 5, 1993"
- Leading zeros and the century are allowed but
- not required on all the above formats. If
- the century is missing, the date is assumed to
- be in the 1900s.
- "19930905"
- "Today" or "."
- These last two formats set the Date object to
- todays date. The word "Today" is not case
- sensitive. The period format (".") was added
- to ease manual data entry.
-
- Date (const tm & TM);
- Constructs a Date object from a tm type.
-
- Date (const DOSDATE_T &ds);
- Constructs a Date object from a MSDOS
- dosdate_t type.
-
- Examples Date date1(10,30,1962); // October 30, 1962
- Date date2(Date::OCTOBER, 30, 1962); //
- same
- Date date3 = "8/8/88"; // August 9, 1988
- Date date4(2450000L); // From a Julian
- Date date5(2,Date::SUNDAY,Date::MAY, 1993);
- // 2nd Sunday in May
-
-
-
- Date::Day
-
- Syntax inline int Day(void) const;
-
- Remarks Returns the day of the month, in the range 1
- through 31.
-
- Example Date d1("09/11/1993");
- assert(d1.Day() == 11);
-
-
- Date::DaysInMonth
-
- Syntax unsigned int DaysInMonth(void) const ;
-
- Remarks Returns the number of days in the month of this
- Date object, in the range 1 to 31.
-
- Example Date d1("09/11/1993");
- assert(d1.DaysInMonth() == 30);
-
-
- Date::DOY
-
- Syntax int DOY(void) const;
-
- Remarks Returns the number of days since Jan. 1 for
- this Date object, in the range 1 to 366.
-
- Example Date d1("02/15/1993");
- assert(d1.DOY() == 46);
-
-
- Date::EOM
-
- Syntax inline Date EOM(void) const;
-
- Remarks Returns a new Date object which represents
- the last day of the month of this Date object.
-
- Example Date d1 = Date("07/04/93");
- Date d2 = d1.EOM();
- assert(d2 == Date("07/31/93"));
-
-
- Date::eom
-
- Syntax DOSDATE_T eom(void) const;
-
- Remarks Returns a DOSDATE struct containing a
- decomposition of the date of the last day of
- the month contained in this Date object.
-
- Note This function may only be available with
- MSDOS based compilers. See the note for
- getDate for structure layout.
-
- Example Date d1("09/11/1993");
- DOSDATE_T ddt;
- ddt = d1.eom();
- assert(ddt.day == 30);
-
-
- Date::EOY
-
- Syntax inline Date EOY(void) const;
-
- Remarks Returns a new Date object which represents the
- last day of the year of this Date object.
-
- Example Date d1 = Date("07/04/93");
- Date d2 = d1.EOY();
- assert(d2 == Date("12/31/93"));
-
-
- Date::FirstDOM()
-
- Syntax inline int FirstDOM() const ;
-
- Remarks Returns the numeric code indicating the day of
- the week the first day of the month of this date
- object falls, in the range 1 through 7, where
- Sunday is 1. These correspond to the enum Wday
- values.
-
- Example Date d1("09/11/1993");
- assert(d1.FirstDOM() == Date::WEDNESDAY);
-
-
- Date::formatDate
-
- Syntax char * formatDate( int nType = DisplayFormat)
- const;
-
- Parameters nType
- One of the format_type enum. If nType is
- not given, it defaults to the current
- setting of the DisplayFormat class
- variable, which is initialized to MDY, but
- can be changes with the class function
- setFormat.
-
- Remarks The following values yield the indicated
- formats:
-
- MDY "9/5/1993"
- DAY "Sunday"
- MONTH "September"
- FULL "Sunday, September 5, 1993"
- EUROPEA "5 September 1993"
- N
- COLLATE "19930905"
- Setting the Display options to DATE_ABBR
- and/or NO_CENTURY will affect the appearance of
- the above formats, except for COLLATE.
-
- Example Date d1("09/11/1993");
- const char *p = d1.formatDate(Date::FULL);
- assert(strcmp(p, "Saturday, September 11,
- 1993")==0);
- p = d1.formatDate(Date::COLLATE);
- assert(strcmp(p, "19930911")==0);
- Date::setFormat(Date::EUROPEAN);
- p = d1.formatDate();
- assert(strcmp(p, "11 September 1993")==0);
-
-
- Date::getDate
-
- Syntax DOSDATE_T getDate() const;
-
- Remarks Returns a DOSDATE_T struct that contains the
- decomposition of the date contained in this
- Date object.
-
- Note The actual name and location of DOSDATE_T
- is implementation defined, and the structure
- and function may only available with MSDOS
- based compilers. The members are as follows:
-
- Field Value stored
- _
- day Day of the month: (1-31)
- month Month of the year: (1-12)
- year Year: (0-119 relative to 1980)
- dayofweek Day of the week: 0-6 (Sunday is 0)
-
-
- Example Date d1("09/11/1993");
- DOSDATE_T ddt;
- ddt = d1.getDate();
- assert(ddt.day == 11);
-
-
- Date Holiday Constructors
-
- Syntax static Date::NewYearsDay(int nYear);
- static Date::PresidentsDay(int nYear);
- static Date::ValentinesDay(int nYear);
- static Date::StPatricksDay(int nYear);
- static Date::MothersDay(int nYear);
- static Date::MemorialDay(int nYear);
- static Date::FlagDay(int nYear);
- static Date::FathersDay(int nYear);
- static Date::CanadaDay(int nYear);
- static Date::IndependenceDay(int nYear);
- static Date::BastilleDay(int nYear);
- static Date::LaborDay(int nYear);
- static Date::VeteransDay(int nYear);
- static Date::ThanksgivingDay(int nYear);
- static Date::ChristmasDay(int nYear);
-
- Parameters nYear
- The year in which the Date represented by
- the new object is to fall.
-
- Remarks Returns a Date object represent the date of the
- holiday.
-
- Example Date d = Date::PresidentsDay(1993);
- assert(d == Date("02/15/1993"));
-
-
-
- Date::isLeapYear
-
- Syntax bool isLeapYear(void) const;
-
- Remarks Returns true if the year represented by this
- Date object is a leap year, false if not.
-
- Example Date d("09/11/1993");
- assert(d.isLeapYear() == false);
-
-
-
- Date::isDST
-
- Syntax bool Date::isDST( void ) const
-
- Remarks Returns true if the date represented by this
- Date object is within Daylight Savings Time.
-
- Example Date d(Date::JULY, 4, 1993);
- assert(d.isDST == true);
-
-
-
- Date::julDate
-
- Syntax inline long julDate() const;
-
- Remarks Returns the Julian date (the number of days
- since 1/1/4713BC).
-
- Example Date d(Date::JULY, 4, 1993);
- assert(d.julDate() == 2449172);
-
-
- Date::NDOW
-
- Syntax inline int NDOW(void) const;
-
- Remarks Returns the numeric code indicating the day of
- the week this date object falls, in the range
- 1 through 7, where Sunday is 1. These
- correspond to the enum Wday values.
-
- Example Date d=Date(Date::SEPTEMBER, 11,1993);
- assert(d.NDOW() == 7);
- assert(d.NDOW() == Date::SATURDAY);
-
-
- Date::NMonth
-
- Syntax inline int NMonth(void) const;
-
- Remarks Return the months in the range 1 through 12.
- These correspond to the enum Months.
-
- Example Date d("09/11/1993");
- assert(d.NMonth() == 9);
-
-
- Date::NYear4
-
- Syntax inline int NYear4() const;
-
- Remarks Returns the year, in the range -4713 through
- 9999.
-
- Example Date d1= "Today";
- assert( (d1.NYear4() >= 1993) && ( d1.NYear4()
- <=2000) );
-
-
- Date::operator <<
-
- Syntax friend ostream &operator << (ostream &os,
- const Date &dDate);
- friend ostream &operator << (ostream &os,
- const DOSDATE_T &ddt);
- friend ostream &operator << (ostream &os, enum
- format_type ft);
-
- Remarks Outputs the formatted Date object to the
- ostream object. Format is based on the
- current default setting, and can be changed by
- Date::setFormat, or by outputing the format
- type. An output operator is also provided
- for the non-class DOSDATE_T structure.
-
- Example Date d1="Today";
- cout << "Today is " << Date::EUROPEAN << d1 <<
- endl;
-
-
- Date::operator const char *
-
- Syntax operator const char *( void );
-
- Remarks This casting operator provides an efficient
- method to access a NULL-terminated character
- string representing the Date object. No
- characters are copied,; only a pointer is
- returned. The appearance of the string is
- based on the current format established by
- Date::setFormat. The default is MDY.
-
- Note The buffer whose address is returned by
- this operator is shared by all Date objects
- and used by CDOW, CMonth and formatDate, and
- subsequent calls overwrite previous strings.
-
- Example Date d1("09/11/1993");
- Date::setFormat(Date::FULL);
- assert(strcmp(d1, "Saturday, September 11,
- 1993")==0);
-
-
- Date::operator +,-
-
- Syntax inline Date Date::operator + (long lDays) const;
- inline Date Date::operator + (int nDays) const;
- inline Date Date::operator - (long lDays) const;
- inline Date Date::operator - (int nDays) const;
- inline long Date::operator - (const Date &date) const;
-
- Remarks The first four operators allow you to add and
- subtract days from Date objects. The fifth
- allows you to subtract one Date object from
- another yields a long giving the number of
- days.
-
- Example Date d1 = Date("08/15/1993");
- Date d2 = d1 + 13; // 13 days later.
- assert( d2 == Date("08/28/1993"));
-
-
-
- Date::operators +=, -=
-
- Syntax Date &operator += (long lDays);
- Date &operator -= (long lDays);
-
- Remarks These operators allow you to add and subtract
- a number of days to and from this Date object.
-
- Example Date d1 = Date("08/15/1993");
- d1 += 10; // 10 days later.
- assert( d1 == Date("08/25/1993"));
- assert( d1 < d2);
- assert( d1<=d2);
-
-
-
- Date::operators ++, --
-
- Syntax Date operator ++ ();
- Date operator ++ (int nDays);
- Date operator -- ();
- Date operator -- (int nDays);
-
- Remarks Pre- and Post-fix auto-increment operators.
- Allow you to step the Date object one day at a
- time.
-
- Example Date d1("09/11/1993");
- Date d2("09/12/1993");
- assert( d1 ++ < d2);
- assert(d1 == d2);
-
-
- Date::Set
-
- Syntax Date &Set(void);
- Date &Set(long lJulian);
- Date &Set(unsigned int nMonth, unsigned int
- nDay, unsigned int nYear);
- Date &Set(int nWeeknum, int nDow, short nMonth,
- short nYear);
-
- Remarks These correspond to the constructors, and allow
- you to change the value of any existing Date
- object.
-
- Example Date d1, d2, d3;
- d1.Set(); // Today's date.
- d2.Set(Date::JANUARY, 15, 1975);
- d3.Set(3, Date::SATURDAY, Date::JANUARY, 1987);
-
-
-
- Date::setCentury
-
- Syntax static int setCentury(short nCentury);
-
- Parameters nCentury
- The new default century value.
-
- Remarks Allows you do change the century assumed when
- translating a date with a 2 digit year. The
- normal default value is "1900". nCentury must
- be either a multiple of 100, or in the range 1
- to 99. In the later case, it is multiple by
- 100 by setCentury before it's used.
-
- Example Date::setCentury(1800);
- Date d1("9/11/93");
- assert(d1 == Date("09/11/1893"));
-
-
- Date::setDST
-
- Syntax bool Date::setDST(unsigned nMonth, unsigned
- nDay) const
-
- Remarks Sets the date inwhich Daylight Savings Time is
- assumed to begin. isDST() will return true for
- any Date object from the Sunday before this
- date. Returns false if the month or day given
- were invalid. Defaults to the dates for North
- America.
-
- Example Date::setDST(Date::APRIL, 30);
-
-
- Date::setFormat
-
- Syntax inline static void setFormat (enum format_type
- nFormat);
-
- Parameters nFormat
- A value from the format_type enum.
-
- Remarks Allows you to change the default format used
- by formatDate and operator const *.
- Must be one of the following:
-
- Value Example
- _
- MDY "9/5/1993"
- DAY "Sunday"
- MONTH "September"
- FULL "Sunday, September 5, 1993"
- EUROPEAN "5 September 1993"
- COLLATE "19930905"
-
- Example Date d1("09/11/1993");
- Date::setFormat(Date::FULL);
- assert(strcmp(d1, "Saturday, September 11,
- 1993")==0);
-
-
-
- Date::setSTD
-
- Syntax bool Date::setSTD(unsigned nMonth, unsigned
- nDay) const
-
- Remarks Sets the date inwhich Daylight Savings Time is
- assumed to end. isDST() will return false for
- any Date object from the Sunday before this
- date. Returns false if the month or day given
- were invalid. Defaults to the dates for North
- America.
-
- Example Date::setDST(Date::OCTOBER, 30);
-
-
-
- Date::setOption
-
- Syntax static bool setOption (enum Options nOption, int
- nAction=ON);
-
- Parameters nOption
- A value from the enum Options.
- nAction
- Either ON or OFF.
-
- Remarks Allows you to modify the formatting options, for
- the class. nOption must be one of the
- following:
- Value Action
- _
- NO_CENTURY Years are formatting uses only 2
- digits.
- DATE_ABBR Month & Day of week names are
- abbreviated to 3 letters
-
- Example Date::setOption(Date::DATE_ABBR);
- Date::setFormat(Date::FULL);
- Date d1 = "9/11/1993";
- assert(strcmp(d1.formatDate(), "Sat, Sep 11,
- 1993")==0);
- Date::setOption(Date::NO_CENTURY,Date::ON);
- assert(strcmp(d1.formatDate(), "Sat, Sep 11,
- 93")==0);
-
-
- Date::WOM
-
- Syntax int WOM(void) const;
-
- Remarks Return the numeric week of the month, in the
- range 1 through 6.
-
- Example Date d1 = "09/12/1993";
- assert(d1.WOM() == 3);
-
-
- Date::WOY
-
- Syntax int WOY(void) const;
-
- Remarks Returns the numeric week of the year, in the
- range 1 through 52.
-
- Example Date d1 = "02/15/1993";
- assert(d1.WOY() == 7);
-
-